var _total = 0;	// 레코드 수
var _pages = 0;	// 현재 페이지
var _rec_per_page = 20;	// 페이지당 레코드 수
var _total_pages = 0;	// 전체 페이지
var _search_cond = '';	// 검색조건
var _search_word = '';	// 검색어

$(function() {	
	// 체크박스 설정
	$("#selectall").click(selectAll);
	
	// 초기 데이터 바인딩
	disp_data(1, 'SEQNO', 'ASC');
	
	// 라디오 버튼
	$( "#radioset" ).buttonset();
});

function excelUploadCallback(data, state) {
	// 전체 레코드수
	_total = parseInt(data.records);
	_total_pages = Math.ceil(_total/_rec_per_page);
	_pages = 1;
	
	$('#img_excel_upload').hide();
	$('#img_upload_complete').show();
	$('#msg_excel_upload').html('엑셀파일 업로드 완료');
	
	$('#msg_progressbar').show();
	$('#progressbar').show();
	
	callGenerate(data.file);
}

function callGenerate(file) {
	$.ajax({
		type: "POST",
		url : "core/generate.php",
		data: {
			'file': file,
			'page': _pages,
			'rec': _rec_per_page
		},
		dataType: "json",
		beforeSend: function() {
			var _percentage = parseInt((((_pages - 1) * _rec_per_page)/_total) * 100);
			$( "#msg_progressbar" ).html('데이터 베이스 저장 및 이미지 생성 중...  ' + _percentage + '%');
			$( "#progressbar" ).progressbar({value: _percentage});
		},
		success: function(data) {
			if(data.completed != 'completed') {
				_pages++;
				callGenerate(data.file);
			}
			else {
				$("#userfile").val("");
				disp_data(1, 'SEQNO', 'ASC');
				
				// 파일 선택 DIV 보이기
				$('#div_excel_upload').show();
				
				// 프로그레스 DIV 감추기
				$( "#progressbar" ).progressbar({value: 0});
				$('#dlg_processing').hide();
				
				$("#dlg_upload").dialog('close');
			}
		},
		error: function(data) {
			$("#dlg_upload").dialog('close');
		}
	});
}

function disp_pager(_page, _sidx, _sord, _records) {
	var _html = "";
	var _block = 10;
	var _rec_page = 20;
	
	var $total_page = Math.ceil(_records/_rec_page);
	var $total_block = Math.ceil($total_page/_block);
	var $cur_block = Math.ceil(_page/_block);
	
	var $head_page = ($cur_block - 1)*_block + 1;
	var $tail_page = $head_page + _block - 1;
	
	$tail_page = ($tail_page > $total_page) ? $total_page : $tail_page;
	
	var $is_next = false;
	var $is_prev = false;
	
	if($cur_block < $total_block) $is_next = true;
	if($cur_block > 1) $is_prev = true;
	
	if($total_block == 1) {	
		$is_next = false;
		$is_prev = false;
	}
	
	if($is_prev) {
		_html += "<div class='nav_span_img' onclick=\"disp_data('";
		_html += parseInt($head_page - _block) + "', '" + _sidx + "','" + _sord + "');\">";
		_html += "<img src='/assets/img/ico/001_27.png' style='width:20px;height:20px;border:none'></div>";
	}
	
	for(var i = $head_page; i<= $tail_page; i++) {
		if(i == _page){
			_html += "<div class='nav_span' id='current' onclick=\"disp_data('";
			_html += i + "', '" + _sidx + "','" + _sord + "');\">" + i + "</div>";
		}
		else {
			_html += "<div class='nav_span' onclick=\"disp_data('";
			_html += i + "', '" + _sidx + "','" + _sord + "');\">" + i + "</div>";	
		}
	}
	
	if($is_next) {
		_html += "<div class='nav_span_img' onclick=\"disp_data('";
		_html += parseInt($head_page + _block) + "', '" + _sidx + "','" + _sord + "');\">";
		_html += "<img src='/assets/img/ico/001_25.png' style='width:20px;height:20px;border:none'></div>";
	}
	
	$('#div_nav').html(_html);
}

function disp_data(_page, _sidx, _sord) {
	_pages = _page;
	// 초기 데이터를 바인딩한다.
	$.ajax({
		type: "POST",
		url : "core/get_data.php",
		data: {
			page: _page,
			rows: 20,
			sidx: _sidx,
			sord: _sord,
			cond: _search_cond,
			word: _search_word
		},
		dataType: "json",
		success: function(data) {
			if(data.records >= 0){
				$('#tbody_data').html('');
				var _html='';
				var _head_ndx = parseInt((_page-1)*20+1);
				var _tail_ndx = parseInt((_page-1)*20);
				for(var i=0; i<20; i++) {
					if(data.rows[i]) {
						_tail_ndx++;
						_html += '<tr title="클릭하시면 상세정보를 보실 수 있습니다." class="rec_detail_row"><td align="center"><input type="checkbox" class="selectable" id="' + data.rows[i].cell[0] + '"></td>';
						for(var j=0; j<12; j++) {
							_html += "<td class=\"rec_detail_cell\" onclick=\"open_detail_dialog('" + data.rows[i].cell[0] + "');\" >";
							_html += data.rows[i].cell[j] + '</td>';
						}
						_html += '</tr>';		
					}
				}
				$('#tbody_data').html(_html);
				$('#div_record_display').html('총 ' + data.records + '개의 데이터 중 ' + _head_ndx + ' ~ ' + _tail_ndx);
				// 네비게이터 출력
				disp_pager(_page, _sidx, _sord, data.records);
			}
			else {
				$('#tbody_data').html('<tr><td colspan="12" align="center">데이터가 없습니다.</td></tr>');
			}
		},
		error: function() {
			$('#tbody_data').html('<tr><td colspan="12" align="center">데이터가 없습니다.</td></tr>');
		}
	});	
}

function selectAll() {
	var checked = $('#selectall').attr("checked");
	
	$(".selectable").each(function(){
       var subChecked = $(this).attr("checked");
       if (subChecked != checked)
          $(this).click();
    });
}

function open_upload_dialog() {
	_total = 0;
	_pages = 0;
	_total_pages = 0;
	
	$("#dlg_upload").dialog({
		buttons:{
			"업로드" : function() {
				if(!$('#userfile').val()) {
					// 에러메시지 출력
					$('#msg_escel_upload').html("<font color='red'>선택된 파일이 없습니다.</font>");
					$('#userfile').focus();
					return;
				}

				var frm_excel_upload = $('#frm_excel_upload')
										.ajaxForm({
											dataType: 'json',
											success: excelUploadCallback
										})
										.submit();

				// 파일 선택 DIV 감추고
				$('#div_excel_upload').hide();
				
				// 프로그레스 DIV 보이기
				$('#dlg_processing').show();
			},
			"취소" : function(){
				$("#dlg_upload").dialog('close');
			}
		}
	});
	$("#dlg_upload").dialog('open');
}

function open_download_dialog() {
	var _checked = "";
	$('input:checked').each( function(){
		_checked += $(this).attr('id') + ',';
	});

	if(_checked != "") {
		_checked = _checked.substring(0, _checked.lastIndexOf(","));
		_checked = _checked.replace('selectall,', '');
	}

	$('#record_sel').attr('value', _checked);
	$('#record_cur').attr('value', 'PG' + _pages);
	
	$('#dlg_download').dialog({
		buttons:{
			"다운로드" : function() {
				var _nValue = "";
				$('input:radio').each( function(){
					if($(this).attr('checked')) {
						_nValue = $(this).val();
					}
				});
				
				if(_nValue == ""){
					// 에러메시지 출력
					$('#msg_escel_download').html("<font color='red'>다운로드 대상 레코드가 없습니다.</font>");
					return;
				}
				$('#dlg_make_excel').show();
				$('#down_cond').val(_search_cond);
				$('#down_word').val(_search_word);
				var frm_excel_down = $('#frm_excel_download')
										.ajaxForm({
											dataType: 'json',
											success: function(data){
												excelDownloadCallback(data);	
											}
										})
										.submit();		
			},
			"닫기" : function(){
				$('#dlg_make_excel').hide();
				$("#dlg_download").dialog('close');
			}
		}
	});
	$('#dlg_download').dialog('open');
}

function excelDownloadCallback(data) {
	var _inputs = "<input type='hidden' name='excel_file' value='" + data + "' />";
	$("<form action='core/download.php' method='post'>" + _inputs + "</form>")
	.appendTo('body').submit().remove();

	$('#dlg_make_excel').hide();
	$('#dlg_download').dialog('close');
}

function open_add_dialog() {
	$('#dlg_add_item').dialog({
		buttons: {
			"추가" : function() {
				$('#msg_add_item').html('데이터 추가 요청을 전송합니다.');
				$('#frm_add_item')
					.ajaxForm({
						dataType: 'json',
						beforeSubmit: function() {
							return check_add_dialog();
						},
						success: function(data) {
							if(data == 'success') {
								$('#frm_add_item').resetForm();
								disp_data(_pages, 'SEQNO', 'ASC');
								$('#msg_add_item').html('데이터가 추가 되었습니다.');
							}
							else
								$('#msg_add_item').html('<font color="red">' + data + '</font> 데이터를 추가하지 못했습니다.');
						}
					})
					.submit();
			},
			"닫기" : function() {
				$('#frm_add_item').resetForm();
				$('#msg_add_item').html('');
				$('#dlg_add_item').dialog('close');
			}
		}
	});
	
	$('#dlg_add_item').dialog('open');
}

function check_add_dialog() {
	if(!$('#txt_oldsi').val()) {
		$('#msg_add_item').html('<font color="red">이전 주소 항목의 시도명을 입력하세요.</font>');
		$('#txt_oldsi').focus();
		return false;
	}
	/*else if(!$('#txt_oldgu').val()) {
		$('#msg_add_item').html('<font color="red">이전 주소 항목의 구군명을 입력하세요.</font>');
		$('#txt_oldgu').focus();
		return false;
	}
	else if(!$('#txt_olddong').val()) {
		$('#msg_add_item').html('<font color="red">이전 주소 항목의 읍면동을 입력하세요.</font>');
		$('#txt_olddong').focus();
		return false;
	}
	else if(!$('#txt_oldbunji').val()) {
		$('#msg_add_item').html('<font color="red">이전 주소 항목의 번지를 입력하세요.</font>');
		$('#txt_oldbunji').focus();
		return false;
	}*/
	else if(!$('#txt_newsi').val()) {
		$('#msg_add_item').html('<font color="red">도로명 주소 항목의 시도명을 입력하세요.</font>');
		$('#txt_newsi').focus();
		return false;
	}
	/*else if(!$('#txt_newgu').val()) {
		$('#msg_add_item').html('<font color="red">도로명 주소 항목의 구군명을 입력하세요.</font>');
		$('#txt_newgu').focus();
		return false;
	}
	else if(!$('#txt_newdong').val()) {
		$('#msg_add_item').html('<font color="red">도로명 주소 항목의 읍면동을 입력하세요.</font>');
		$('#txt_newdong').focus();
		return false;
	}
	else if(!$('#txt_newbunji').val()) {
		$('#msg_add_item').html('<font color="red">도로명 주소 항목의 번지를 입력하세요.</font>');
		$('#txt_newbunji').focus();
		return false;
	}
	else if($('#txt_used').val() && !($('#txt_used').val() == 'Y' || $('#txt_used').val() == 'N')) {
		$('#msg_add_item').html('<font color="red">사용 여부 항목의 값은 Y 혹은 N 입니다.</font>');
		$('#txt_used').val('');
		$('#txt_used').focus();
		return false;
	}
	else if(!$('#txt_cdate').val()) {
		$('#msg_add_item').html('<font color="red">시공일자 항목의 값은 0000-00-00 형식입니다.</font>');
		$('#txt_cdate').focus();
		return false;
	}*/
	else return true;
}

function open_edit_dialog() {
	var _checked = "";
	$('.selectable').each( function(){
		if($(this).attr('checked'))	_checked += $(this).attr('id');
	});
	
	if(_checked == "") {
		$('#msg_edit_item').html("<font color='red'>수정할 데이터를 선택하세요</font>");
		$("#dlg_edit_item").dialog({
			buttons: {
				"닫기" : function() {
					$('#msg_edit_item').html("선택하신 데이터의 수정 내역을 입력하세요.");
					$("#dlg_edit_item").dialog('close');
				}
			}
		});

		$('#dlg_edit_item').dialog('open');
	}
	else {
		$.ajax({
			type: "POST",
			url : "core/detail.php",
			data: {SEQNO: _checked},
			dataType: "json",
			success: function(data) {
				if(data.response == 'success') {
					$("#img_edit_item").attr('src', data.img_loc + data.png);
					$("#edit_oldsi").val(data.oldsi);
					$("#edit_oldgu").val(data.oldgu);
					$("#edit_olddong").val(data.olddong);
					$("#edit_oldbunji").val(data.oldbunji);
					$("#edit_newsi").val(data.newsi);
					$("#edit_newgu").val(data.newgu);
					$("#edit_newdong").val(data.newdong);
					$("#edit_newbunji").val(data.newbunji);
					$("#edit_lat").html(data.lat);
					$("#edit_lng").html(data.lng);
					$("#edit_img").html(data.png);
					$("#edit_cpic").val(data.cpic);
					$("#edit_unit").val(data.unit);
					$("#edit_used").val(data.used);
					$("#edit_cdate").val(data.cdate);
					$("#edit_seqno").val(data.seqno);
					$("#edit_png").val(data.png);
				}
				else {
					$('#msg_edit_item').html('선택하신 ' + _seq + '번 데이터의 기존 정보를 가져올 수 없습니다. 잠시 후 다시 시도하여 주십시오.');								
				}
			},
			error: function(data) {
				$('#msg_edit_item').html('선택하신 ' + _seq + '번 데이터의 기존 정보를 가져올 수 없습니다. 잠시 후 다시 시도하여 주십시오.');
			}
		});
		
		$('#dlg_edit_item').dialog({
			buttons: {
				"수정" : function() {
					$('#msg_edit_item').html('데이터 수정 요청을 전송합니다.');
					$('#frm_edit_item')
						.ajaxForm({
							dataType: 'json',
							beforeSubmit: function() {
								return check_edit_dialog();
							},
							success: function(data) {
								if(data == 'success') {
									$("#img_edit_item").attr('src', '');
									$("#edit_lat").html('');
									$("#edit_lng").html('');
									$("#edit_img").html('');
									$('#frm_edit_item').resetForm();
									disp_data(_pages, 'SEQNO', 'ASC');
									$('#msg_edit_item').html('데이터가 수정 되었습니다.');
								}
								else
									$('#msg_edit_item').html('<font color="red">' + data + '</font> 데이터를 수정하지 못했습니다.');
							}
						})
						.submit();
				},
				"닫기" : function() {
					$('#frm_edit_item').resetForm();
					$('#msg_edit_item').html("선택하신 데이터의 수정 내역을 입력하세요.");
					$('#dlg_edit_item').dialog('close');
				}
			}
		});
		
		$('#dlg_edit_item').dialog('open');
	}
}

function check_edit_dialog() {
	if(!$('#edit_oldsi').val()) {
		$('#msg_edit_item').html('<font color="red">이전 주소 항목의 시도명을 입력하세요.</font>');
		$('#edit_oldsi').focus();
		return false;
	}
	/*else if(!$('#edit_oldgu').val()) {
		$('#msg_edit_item').html('<font color="red">이전 주소 항목의 구군명을 입력하세요.</font>');
		$('#edit_oldgu').focus();
		return false;
	}
	else if(!$('#edit_olddong').val()) {
		$('#msg_edit_item').html('<font color="red">이전 주소 항목의 읍면동을 입력하세요.</font>');
		$('#edit_olddong').focus();
		return false;
	}
	else if(!$('#edit_oldbunji').val()) {
		$('#msg_edit_item').html('<font color="red">이전 주소 항목의 번지를 입력하세요.</font>');
		$('#edit_oldbunji').focus();
		return false;
	}*/
	else if(!$('#edit_newsi').val()) {
		$('#msg_edit_item').html('<font color="red">도로명 주소 항목의 시도명을 입력하세요.</font>');
		$('#txt_newsi').focus();
		return false;
	}
	/*else if(!$('#txt_newgu').val()) {
		$('#msg_edit_item').html('<font color="red">도로명 주소 항목의 구군명을 입력하세요.</font>');
		$('#edit_newgu').focus();
		return false;
	}
	else if(!$('#edit_newdong').val()) {
		$('#msg_edit_item').html('<font color="red">도로명 주소 항목의 읍면동을 입력하세요.</font>');
		$('#edit_newdong').focus();
		return false;
	}
	else if(!$('#edit_newbunji').val()) {
		$('#msg_edit_item').html('<font color="red">도로명 주소 항목의 번지를 입력하세요.</font>');
		$('#edit_newbunji').focus();
		return false;
	}
	else if($('#edit_used').val() && !($('#edit_used').val() == 'Y' || $('#edit_used').val() == 'N')) {
		$('#msg_add_item').html('<font color="red">사용 여부 항목의 값은 Y 혹은 N 입니다.</font>');
		$('#txt_used').val('');
		$('#txt_used').focus();
		return false;
	}
	else if(!$('#edit_cdate').val()) {
		$('#msg_edit_item').html('<font color="red">시공일자 항목의 값은 0000-00-00 형식입니다.</font>');
		$('#edit_cdate').focus();
		return false;
	}*/
	else return true;
}

function open_delete_dialog() {
	var _checked = "";
	$('.selectable').each( function(){
		if($(this).attr('checked'))	_checked += $(this).attr('id') + ',';
	});
	
	if(_checked == "") {
		$('#msg_delete_item').html("<font color='red'>삭제할 데이터를 선택하세요</font>");
		$("#dlg_delete_item").dialog({
			buttons: {
				"닫기" : function() {
					$('#msg_delete_item').html("선택하신 항목을 삭제하시겠습니까?");
					$("#dlg_delete_item").dialog('close');
				}
			}
		});	
	}
	else {
		_checked = _checked.substring(0, _checked.lastIndexOf(","));
		_checked = _checked.replace('selectall,', '');
		_checked = _checked.replace('selectall', '');
		
		$('#msg_delete_item').html("선택하신 " + _checked + "번 레코드를 삭제합니다.");
		$("#dlg_delete_item").dialog({
			buttons: {
				"삭제" : function() {
					$.ajax({
						type: "POST",
						url : "core/del_data.php",
						data: {SEQNO: _checked},
						dataType: "json",
						success: function(data) {
							if(data == 'success') {
								if ($('#selectall').attr("checked")) $('#selectall').attr("checked", false);
								$('#msg_delete_item').html("선택하신 항목을 삭제하시겠습니까?");
								disp_data(_pages, 'SEQNO', 'ASC');
								$('#dlg_delete_item').dialog('close');								
							}
							else {
								$('#msg_delete_item').html("삭제요청을 처리하지 못했습니다. 잠시 후 다시 시도하여 주십시오. ");								
							}
						},
						error: function(data) {
							$('#msg_delete_item').html("삭제요청을 처리하지 못했습니다. 잠시 후 다시 시도하여 주십시오. ");
						}
					});
				},
				"취소" : function() {
					$('#msg_delete_item').html("선택하신 항목을 삭제하시겠습니까?");
					$("#dlg_delete_item").dialog('close');}
			}
		});
	}
	$("#dlg_delete_item").dialog('open');
}

function open_detail_dialog(_seq) {
	$('#msg_detail_item').html('선택하신 ' + _seq + '번 레코드의 상세 내역입니다.');
	$('#dlg_detail_item').dialog({
		open: function() {
			$.ajax({
				type: "POST",
				url : "core/detail.php",
				data: {SEQNO: _seq},
				dataType: "json",
				success: function(data) {
					if(data.response == 'success') {
						$("#img_detail_item").attr('src', data.img_loc + data.png);
						$("#old_addr").html(data.oldsi + " " + data.oldgu + " " + data.olddong + " " + data.oldbunji);
						$("#new_addr").html(data.newsi + " " + data.newgu + " " + data.newdong + " " + data.newbunji);
						$("#lat").html(data.lat);
						$("#lng").html(data.lng);
						$("#png").html(data.png);
						$("#cpic").html(data.cpic);
						$("#unit").html(data.unit);
						$("#used").html(data.used);
						$("#cdate").html(data.cdate);
					}
					else {
						$('#msg_detail_item').html('선택하신 ' + _seq + ' 레코드 검색 요청을 처리하지 못했습니다. 잠시 후 다시 시도하여 주십시오.');								
					}
				},
				error: function(data) {
					$('#msg_detail_item').html('선택하신 ' + _seq + ' 레코드 검색 요청을 처리하지 못했습니다. 잠시 후 다시 시도하여 주십시오.');
				}
			});
		},
		buttons: {
			"닫기" : function() {
				$('#msg_detail_item').html("선택하신 항목의 상세보기 입니다.");
				$('#dlg_detail_item').dialog('close');}
		}
	});
	
	$('#dlg_detail_item').dialog('open');
}

function open_search_dialog() {
	$("#dlg_search_item").dialog({
		buttons: {
			"검색" : function() {
				if($('#sel_search_cond').val() == "0") {
					$('#msg_search_item').html('<font color="red">검색조건을 선택하세요.</font>');
					return false;
				}
				else if(!$('#txt_search_word').val()) {
					$('#msg_search_item').html('<font color="red">검색어를 입력하세요.</font>');
					return false;
				}
				else {
					$('#msg_search_item').html('검색항목과 검색어를 입력하세요');
					_search_cond = $('#sel_search_cond').val();
					_search_word = $('#txt_search_word').val();
					disp_data(1, 'SEQNO', 'ASC');
					$("#dlg_search_item").dialog('close');
				}
			},
			"취소" : function() {
				$('#msg_delete_item').html("선택하신 항목을 삭제하시겠습니까?");
				$("#dlg_search_item").dialog('close');}
		}
	});
	
	$('#dlg_search_item').dialog('open');
}

function refresh_data() {
	_search_cond = '';	// 검색조건
	_search_word = '';	// 검색어

	// 초기 데이터 바인딩
	disp_data(1, 'SEQNO', 'ASC');
}